#ifndef ENTITY_PLAYER_HPP
#define ENTITY_PLAYER_HPP

#include "Common.hpp"
#include "Entity/IEntity.hpp"
#include "Graphics/ISprite.hpp"
#include "Physics/IBody.hpp"

#include "SFML/Window/Input.hpp"

namespace Entity
{
	class Player : public IEntity
	{
	public:
		Player( void );
		virtual ~Player( void );

		virtual void Think( const float frameTime );
		virtual void Draw( void );

		virtual Graphics::ISprite *GetSprite( void );
		virtual Physics::IBody *GetPhysicsBody( void );

		virtual float GetAngle( void ) const;
		virtual void SetAngle( const float ang );

		virtual Math::Vectorf GetPosition( void ) const;
		virtual void SetPosition( const Math::Vectorf &pos );

		virtual float GetAngularVelocity( void ) const;
		virtual void SetAngularVelocity( const float vel );

		virtual Math::Vectorf GetLinearVelocity( void ) const;
		virtual void SetLinearVelocity( const Math::Vectorf &vel );
	private:
		const sf::Input &input;
		bool jumping;

		Graphics::ISprite *sprite;
		Physics::IBody *physBody;
	};
}

#endif //ENTITY_PLAYER_HPP